{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 分类训练"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 机器学习的Hello World，一个新的分类算法，都会看看再Minst上的执行结果"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "b'\\x00\\x00\\x00\\x02'"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# struct模块打包\n",
    "import struct\n",
    "struct.pack('>i', 2) # pack解压(打包为int类型， 需要打包的数据)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 解压文件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(2051, 60000, 28, 28)\n",
      "47040000\n"
     ]
    }
   ],
   "source": [
    "with open('./MINST_data/train-images.idx3-ubyte', 'rb') as f:\n",
    "    buffer = f.read(4*4) # 4个int\n",
    "    head = struct.unpack('>iiii', buffer) # 解压为4个int\n",
    "    print(head)\n",
    "    length = head[1] * head[2] * head[3] # 图片像素集\n",
    "    print(length)\n",
    "    buffer = f.read(length) # 读取图片像素集\n",
    "    data = struct.unpack('>{}B'.format(length), buffer) # 解压,读取length长度的字节"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "47040000"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(data)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tuple"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "type(data) # 查看类型，为元组类型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 把data数据重新塑形成三维矩阵"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "imgs = np.reshape(data, (head[1], head[2], head[3]))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000, 28, 28)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "imgs.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAM6klEQVR4nO3db4hd9Z3H8c8n2oDYKol/0sEETUuUliXqEmXVolliQzZPYh9YGrRmqTiCFVrYByv2QQVZ0MW29ImFqUrSNWspxNFQam0IRVvQMBNJNcmYxIYYJxmSFZGmKHaj330wZ7pjnHvu5N5z7rkz3/cLLvfe873nni+HfPI755575+eIEID5b0HTDQDoDcIOJEHYgSQIO5AEYQeSOLeXG7PNR/9AzSLCMy3vamS3vc72Adtv2X6gm/cCUC93ep3d9jmSDkr6uqRxSSOSNkbE/pJ1GNmBmtUxsl8v6a2IOBwRf5P0S0kbung/ADXqJuyXSXpn2vPxYtmn2B60PWp7tIttAehSNx/QzXSo8JnD9IgYkjQkcRgPNKmbkX1c0rJpz5dKOt5dOwDq0k3YRyStsL3c9kJJ35K0vZq2AFSt48P4iDht+35JL0o6R9JTEbGvss4AVKrjS28dbYxzdqB2tXypBsDcQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EASHU/ZDPS7NWvWtKxt3bq1dN1bbrmltH7gwIGOempSV2G3fUTSKUkfSzodEauqaApA9aoY2f85It6t4H0A1IhzdiCJbsMekn5ne7ftwZleYHvQ9qjt0S63BaAL3R7G3xQRx21fKmmH7Tcj4uXpL4iIIUlDkmQ7utwegA51NbJHxPHi/qSkYUnXV9EUgOp1HHbb59v+wtRjSWsl7a2qMQDV6uYwfomkYdtT7/PfEfHbSrqqwc0331xav+iii0rrw8PDVbaDHrjuuuta1kZGRnrYSX/oOOwRcVjS1RX2AqBGXHoDkiDsQBKEHUiCsANJEHYgiTQ/cV29enVpfcWKFaV1Lr31nwULyseq5cuXt6xdfvnlpesWl5TnFUZ2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUgizXX2u+66q7T+yiuv9KgTVGVgYKC0fs8997SsPf3006Xrvvnmmx311M8Y2YEkCDuQBGEHkiDsQBKEHUiCsANJEHYgiTTX2dv99hlzzxNPPNHxuocOHaqwk7mBBABJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEvPmOvvKlStL60uWLOlRJ+iVCy+8sON1d+zYUWEnc0Pbkd32U7ZP2t47bdli2ztsHyruF9XbJoBuzeYwfrOkdWcse0DSzohYIWln8RxAH2sb9oh4WdJ7ZyzeIGlL8XiLpNsq7gtAxTo9Z18SEROSFBETti9t9ULbg5IGO9wOgIrU/gFdRAxJGpIk21H39gDMrNNLbydsD0hScX+yupYA1KHTsG+XtKl4vEnS89W0A6AubQ/jbT8jabWki22PS/qhpEck/cr23ZKOSrq9ziZnY/369aX18847r0edoCrtvhtRNv96O8eOHet43bmqbdgjYmOL0pqKewFQI74uCyRB2IEkCDuQBGEHkiDsQBLz5ieuV111VVfr79u3r6JOUJXHHnustN7u0tzBgwdb1k6dOtVRT3MZIzuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJDFvrrN3a2RkpOkW5qQLLrigtL5u3Zl/q/T/3XnnnaXrrl27tqOepjz88MMta++//35X7z0XMbIDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBJcZy8sXry4sW1fffXVpXXbpfVbb721ZW3p0qWl6y5cuLC0fscdd5TWFywoHy8+/PDDlrVdu3aVrvvRRx+V1s89t/yf7+7du0vr2TCyA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EASjojebcyubWOPP/54af3ee+8trbf7ffPRo0fPuqfZWrlyZWm93XX206dPt6x98MEHpevu37+/tN7uWvjo6Ghp/aWXXmpZO3HiROm64+PjpfVFixaV1tt9h2C+iogZ/8G0HdltP2X7pO2905Y9ZPuY7T3FrXxydACNm81h/GZJM/25kZ9ExDXF7TfVtgWgam3DHhEvS3qvB70AqFE3H9Ddb/v14jC/5cmT7UHbo7bLT+4A1KrTsP9M0pclXSNpQtKPWr0wIoYiYlVErOpwWwAq0FHYI+JERHwcEZ9I+rmk66ttC0DVOgq77YFpT78haW+r1wLoD21/z277GUmrJV1se1zSDyWttn2NpJB0RFL5ReweuO+++0rrb7/9dmn9xhtvrLKds9LuGv5zzz1XWh8bG2tZe/XVVzvqqRcGBwdL65dccklp/fDhw1W2M++1DXtEbJxh8ZM19AKgRnxdFkiCsANJEHYgCcIOJEHYgSTS/CnpRx99tOkWcIY1a9Z0tf62bdsq6iQHRnYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSCLNdXbMP8PDw023MKcwsgNJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAS/J4dfct2af3KK68srffzdNVNaDuy215m+/e2x2zvs/29Yvli2ztsHyruF9XfLoBOzeYw/rSkf4uIr0j6J0nftf1VSQ9I2hkRKyTtLJ4D6FNtwx4RExHxWvH4lKQxSZdJ2iBpS/GyLZJuq6tJAN07q3N221dIulbSLklLImJCmvwPwfalLdYZlDTYXZsAujXrsNv+vKRtkr4fEX9p9+HJlIgYkjRUvEd00iSA7s3q0pvtz2ky6Fsj4tli8QnbA0V9QNLJeloEUIXZfBpvSU9KGouIH08rbZe0qXi8SdLz1beHzCKi9LZgwYLSGz5tNofxN0n6tqQ3bO8plj0o6RFJv7J9t6Sjkm6vp0UAVWgb9oj4o6RWJ+hrqm0HQF041gGSIOxAEoQdSIKwA0kQdiAJfuKKOeuGG24orW/evLk3jcwRjOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATX2dG3ZvvXkDA7jOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kATX2dGYF154obR+++38dfIqMbIDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKOiPIX2Msk/ULSFyV9ImkoIn5q+yFJ90j6n+KlD0bEb9q8V/nGAHQtImb8QwCzCfuApIGIeM32FyTtlnSbpG9K+mtEPDbbJgg7UL9WYZ/N/OwTkiaKx6dsj0m6rNr2ANTtrM7ZbV8h6VpJu4pF99t+3fZTthe1WGfQ9qjt0a46BdCVtofxf3+h/XlJL0n6j4h41vYSSe9KCkkPa/JQ/ztt3oPDeKBmHZ+zS5Ltz0n6taQXI+LHM9SvkPTriPiHNu9D2IGatQp728N4T/6JzycljU0PevHB3ZRvSNrbbZMA6jObT+O/JukPkt7Q5KU3SXpQ0kZJ12jyMP6IpHuLD/PK3ouRHahZV4fxVSHsQP06PowHMD8QdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkuj1lM3vSnp72vOLi2X9qF9769e+JHrrVJW9Xd6q0NPfs39m4/ZoRKxqrIES/dpbv/Yl0VunetUbh/FAEoQdSKLpsA81vP0y/dpbv/Yl0VunetJbo+fsAHqn6ZEdQI8QdiCJRsJue53tA7bfsv1AEz20YvuI7Tds72l6frpiDr2TtvdOW7bY9g7bh4r7GefYa6i3h2wfK/bdHtvrG+ptme3f2x6zvc/294rlje67kr56st96fs5u+xxJByV9XdK4pBFJGyNif08bacH2EUmrIqLxL2DYvlnSXyX9YmpqLdv/Kem9iHik+I9yUUT8e5/09pDOchrvmnprNc34v6rBfVfl9OedaGJkv17SWxFxOCL+JumXkjY00Effi4iXJb13xuINkrYUj7do8h9Lz7XorS9ExEREvFY8PiVpaprxRvddSV890UTYL5P0zrTn4+qv+d5D0u9s77Y92HQzM1gyNc1WcX9pw/2cqe003r10xjTjfbPvOpn+vFtNhH2mqWn66frfTRHxj5L+RdJ3i8NVzM7PJH1Zk3MATkj6UZPNFNOMb5P0/Yj4S5O9TDdDXz3Zb02EfVzSsmnPl0o63kAfM4qI48X9SUnDmjzt6CcnpmbQLe5PNtzP30XEiYj4OCI+kfRzNbjvimnGt0naGhHPFosb33cz9dWr/dZE2EckrbC93PZCSd+StL2BPj7D9vnFByeyfb6kteq/qai3S9pUPN4k6fkGe/mUfpnGu9U042p43zU+/XlE9Pwmab0mP5H/s6QfNNFDi76+JOlPxW1f071JekaTh3X/q8kjorslXSRpp6RDxf3iPurtvzQ5tffrmgzWQEO9fU2Tp4avS9pT3NY3ve9K+urJfuPrskASfIMOSIKwA0kQdiAJwg4kQdiBJAg7kARhB5L4P2DL5W//DUIbAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPsAAAD4CAYAAAAq5pAIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAMdUlEQVR4nO3dX6gc5R3G8eeJbRGiaDQYo02NFS9aio0lSMFQUkxDFCHxomIuSqTS40WVChUiVlAphVBri4gKp2j+lNZSiDahlKqEqC1B8SipxiapNkRNcjinIqK5SvX8enEmcoy7s8edmZ1Nft8PHHZ33t2ZH0OevO/M7M7riBCAU9+ctgsAMBiEHUiCsANJEHYgCcIOJPGFQW7MNqf+gYZFhDstr9Sz215le7/tN23fUWVdAJrlfq+z2z5N0r8lfU/SIUkvSVobEf8q+Qw9O9CwJnr2KyS9GREHIuKYpD9KWl1hfQAaVCXsF0p6Z8brQ8WyT7E9YnvM9liFbQGoqMoJuk5Dhc8M0yNiVNKoxDAeaFOVnv2QpEUzXn9Z0pFq5QBoSpWwvyTpUtsX2/6SpBskba+nLAB163sYHxEf2b5F0lOSTpP0WES8XltlAGrV96W3vjbGMTvQuEa+VAPg5EHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSIOxAEn1P2Qw07a677iptv/fee0vb58zp3pctX7689LPPPfdcafvJqFLYbR+U9KGkjyV9FBFL6ygKQP3q6Nm/GxHv1rAeAA3imB1IomrYQ9LTtl+2PdLpDbZHbI/ZHqu4LQAVVB3GXxkRR2yfJ+kZ2/si4vmZb4iIUUmjkmQ7Km4PQJ8q9ewRcaR4nJT0pKQr6igKQP36DrvtubbPPP5c0kpJe+oqDEC9qgzjF0h60vbx9fwhIv5WS1VI4cYbbyxtX79+fWn71NRU39uOyHdE2XfYI+KApG/WWAuABnHpDUiCsANJEHYgCcIOJEHYgST4iStac9FFF5W2n3766QOqJAd6diAJwg4kQdiBJAg7kARhB5Ig7EAShB1IguvsaNSKFSu6tt16662V1r1v377S9muvvbZr28TERKVtn4zo2YEkCDuQBGEHkiDsQBKEHUiCsANJEHYgCa6zo5Jly5aVtm/cuLFr21lnnVVp2/fdd19p+1tvvVVp/acaenYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSILr7Khk3bp1pe0XXHBB3+t+9tlnS9u3bNnS97oz6tmz237M9qTtPTOWnWP7GdtvFI/zmi0TQFWzGcZvkrTqhGV3SNoREZdK2lG8BjDEeoY9Ip6X9N4Ji1dL2lw83yxpTc11AahZv8fsCyJiXJIiYtz2ed3eaHtE0kif2wFQk8ZP0EXEqKRRSbIdTW8PQGf9XnqbsL1QkorHyfpKAtCEfsO+XdLxay7rJG2rpxwATXFE+cja9uOSlkuaL2lC0t2S/izpT5K+IultSd+PiBNP4nVaF8P4k8z8+fNL23vdf31qaqpr2/vvv1/62euvv760fefOnaXtWUWEOy3vecweEWu7NF1VqSIAA8XXZYEkCDuQBGEHkiDsQBKEHUiCn7gmt3jx4tL2rVu3NrbtBx98sLSdS2v1omcHkiDsQBKEHUiCsANJEHYgCcIOJEHYgSS4zp7cqlUn3kv00y677LJK69+xY0fXtgceeKDSuvH50LMDSRB2IAnCDiRB2IEkCDuQBGEHkiDsQBI9byVd68a4lfTArVlTPg3fpk2bStvnzp1b2r5r167S9rLbQfe6DTX60+1W0vTsQBKEHUiCsANJEHYgCcIOJEHYgSQIO5AEv2c/BZTd+73J+75L0oEDB0rbuZY+PHr27LYfsz1pe8+MZffYPmx7d/F3TbNlAqhqNsP4TZI63c7kNxGxpPj7a71lAahbz7BHxPOS3htALQAaVOUE3S22Xy2G+fO6vcn2iO0x22MVtgWgon7D/oikSyQtkTQu6f5ub4yI0YhYGhFL+9wWgBr0FfaImIiIjyNiStJvJV1Rb1kA6tZX2G0vnPHyOkl7ur0XwHDoeZ3d9uOSlkuab/uQpLslLbe9RFJIOijp5gZrRA/r16/v2jY1NdXotjds2NDo+lGfnmGPiLUdFj/aQC0AGsTXZYEkCDuQBGEHkiDsQBKEHUiCn7ieBJYsWVLavnLlysa2vW3bttL2/fv3N7Zt1IueHUiCsANJEHYgCcIOJEHYgSQIO5AEYQeSYMrmk8Dk5GRp+7x5Xe8K1tMLL7xQ2n711VeXth89erTvbaMZTNkMJEfYgSQIO5AEYQeSIOxAEoQdSIKwA0nwe/aTwLnnnlvaXuV20Q8//HBpO9fRTx307EAShB1IgrADSRB2IAnCDiRB2IEkCDuQBNfZh8DGjRtL2+fMae7/5F27djW2bgyXnv+KbC+yvdP2Xtuv2/5Jsfwc28/YfqN47P8OCgAaN5su4yNJP42Ir0n6tqQf2/66pDsk7YiISyXtKF4DGFI9wx4R4xHxSvH8Q0l7JV0oabWkzcXbNkta01SRAKr7XMfsthdLulzSi5IWRMS4NP0fgu3zunxmRNJItTIBVDXrsNs+Q9JWSbdFxAd2x3vafUZEjEoaLdbBDSeBlszqNK/tL2o66L+PiCeKxRO2FxbtCyWV3wIVQKt69uye7sIflbQ3In49o2m7pHWSNhSP5XP7JtZryuUVK1aUtvf6CeuxY8e6tj300EOln52YmChtx6ljNsP4KyX9QNJrtncXy+7UdMj/ZPsmSW9L+n4zJQKoQ8+wR8Q/JHU7QL+q3nIANIWvywJJEHYgCcIOJEHYgSQIO5AEP3EdgLPPPru0/fzzz6+0/sOHD3dtu/322yutG6cOenYgCcIOJEHYgSQIO5AEYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1Igt+zD8C+fftK23tNm7xs2bI6y0FS9OxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kIQjovwN9iJJWySdL2lK0mhEPGD7Hkk/kvTf4q13RsRfe6yrfGMAKouIjrMuzybsCyUtjIhXbJ8p6WVJayRdL+loRPxqtkUQdqB53cI+m/nZxyWNF88/tL1X0oX1lgegaZ/rmN32YkmXS3qxWHSL7VdtP2Z7XpfPjNgesz1WqVIAlfQcxn/yRvsMSc9J+kVEPGF7gaR3JYWkn2t6qP/DHutgGA80rO9jdkmy/UVJf5H0VET8ukP7Ykl/iYhv9FgPYQca1i3sPYfxti3pUUl7Zwa9OHF33HWS9lQtEkBzZnM2fpmkv0t6TdOX3iTpTklrJS3R9DD+oKSbi5N5ZeuiZwcaVmkYXxfCDjSv72E8gFMDYQeSIOxAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kARhB5Ig7EAShB1IgrADSRB2IIlBT9n8rqS3ZryeXywbRsNa27DWJVFbv+qs7aJuDQP9PftnNm6PRcTS1gooMay1DWtdErX1a1C1MYwHkiDsQBJth3205e2XGdbahrUuidr6NZDaWj1mBzA4bffsAAaEsANJtBJ226ts77f9pu072qihG9sHbb9me3fb89MVc+hN2t4zY9k5tp+x/Ubx2HGOvZZqu8f24WLf7bZ9TUu1LbK90/Ze26/b/kmxvNV9V1LXQPbbwI/ZbZ8m6d+SvifpkKSXJK2NiH8NtJAubB+UtDQiWv8Chu3vSDoqacvxqbVs/1LSexGxofiPcl5ErB+S2u7R55zGu6Hauk0zfqNa3Hd1Tn/ejzZ69iskvRkRByLimKQ/SlrdQh1DLyKel/TeCYtXS9pcPN+s6X8sA9eltqEQEeMR8Urx/ENJx6cZb3XfldQ1EG2E/UJJ78x4fUjDNd97SHra9su2R9oupoMFx6fZKh7Pa7meE/WcxnuQTphmfGj2XT/Tn1fVRtg7TU0zTNf/royIb0m6WtKPi+EqZucRSZdoeg7AcUn3t1lMMc34Vkm3RcQHbdYyU4e6BrLf2gj7IUmLZrz+sqQjLdTRUUQcKR4nJT2p6cOOYTJxfAbd4nGy5Xo+ERETEfFxRExJ+q1a3HfFNONbJf0+Ip4oFre+7zrVNaj91kbYX5J0qe2LbX9J0g2StrdQx2fYnlucOJHtuZJWavimot4uaV3xfJ2kbS3W8inDMo13t2nG1fK+a33684gY+J+kazR9Rv4/kn7WRg1d6vqqpH8Wf6+3XZukxzU9rPufpkdEN0k6V9IOSW8Uj+cMUW2/0/TU3q9qOlgLW6ptmaYPDV+VtLv4u6btfVdS10D2G1+XBZLgG3RAEoQdSIKwA0kQdiAJwg4kQdiBJAg7kMT/AR1U3JCzCjB2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "for i in range(5):\n",
    "    plt.imshow(imgs[i], cmap = 'gray') # 输出图片，颜色为灰度\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\feature_extraction\\text.py:17: DeprecationWarning: Using or importing the ABCs from 'collections' instead of from 'collections.abc' is deprecated since Python 3.3,and in 3.9 it will stop working\n",
      "  from collections import Mapping, defaultdict\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import fetch_mldata\n",
    "mnist = fetch_mldata('mnist-original', data_home='./')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'DESCR': 'mldata.org dataset: mnist-original',\n",
       " 'COL_NAMES': ['label', 'data'],\n",
       " 'target': array([0., 0., 0., ..., 9., 9., 9.]),\n",
       " 'data': array([[0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        ...,\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0],\n",
       "        [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)}"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mnist"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* DESCR数据集描述\n",
    "* data包含一个数组，每个实例为一行，每个特征为一列\n",
    "* target包含一个带有标签的数组"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "X, y = mnist['data'], mnist['target']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000, 784)"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(70000,)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "some_digit = X[36000]\n",
    "some_digit_image = some_digit.reshape(28, 28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(some_digit_image, cmap=matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y[36000]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 建立测试集和训练集"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, X_test, y_train, y_test = X[:60000], X[60000:], y[:60000], y[60000:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 将数据集合交叉洗牌，交叉验证时，每个子集合数据分布均匀，有些机器学习算法对训练实力的顺序敏感"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([27991, 31769, 10436, ..., 43247, 49569, 11183])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "shuffle_index = np.random.permutation(60000) # 随机排列\n",
    "shuffle_index"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       ...,\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0],\n",
       "       [0, 0, 0, ..., 0, 0, 0]], dtype=uint8)"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_train"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练一个二元分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False,  True, False, ..., False, False, False])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 识别数字5，二元分类5或者非5\n",
    "y_train_5 = (y_train == 5)\n",
    "y_train_5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True, False, ..., False, False, False],\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ...,  True, False, False],\n",
       "       ...,\n",
       "       [False, False, False, ..., False, False, False],\n",
       "       [False, False, False, ...,  True, False, False],\n",
       "       [False, False, False, ..., False, False, False]])"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_5.reshape(20, -1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_test_5 = (y_test == 5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# SDG梯度下降分类器，适合大的数据集，独立处理训练集数据，一次一个，适合在线学习\n",
    "\n",
    "from sklearn.linear_model import SGDClassifier\n",
    "\n",
    "sgd_clf = SGDClassifier(random_state=42)\n",
    "sgd_clf.fit(X_train, y_train_5)\n",
    "\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 性能考核"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用交叉验证测量精度"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.96475, 0.9502 , 0.9602 ])"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估分类器比评估回归器要困难的多\n",
    "# 3个折叠，正确率达到95%以上\n",
    "\n",
    "from sklearn.model_selection import cross_val_score # 得到精度分数\n",
    "cross_val_score(sgd_clf, X_train, y_train_5, cv = 3, scoring=\"accuracy\")  # cv代表折叠，默认10，分成三份，测试三次，每次两个训练，一个测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 把每张图都分成非5\n",
    "from sklearn.base import BaseEstimator\n",
    "\n",
    "class Never5Classifier(BaseEstimator):\n",
    "    def fit(self, X, y=None):\n",
    "        pass\n",
    "    def predict(self, X):\n",
    "        return np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False],\n",
       "       [False],\n",
       "       [False],\n",
       "       ...,\n",
       "       [False],\n",
       "       [False],\n",
       "       [False]])"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.zeros((len(X), 1), dtype=bool)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.9103 , 0.9102 , 0.90845])"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "never_5_clf = Never5Classifier()\n",
    "cross_val_score(never_5_clf, X_train, y_train_5, cv = 3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 准确率超过90%,因为5的图像大约只有10%，你猜一张图不是5，90%的时间你都是正确的\n",
    "* 这说明准确率无法成为分类器的首要性能指标，特别是当处理偏科数据集，某些类比其他类更为频繁"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 混淆矩阵"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 评估分类器性能的更好方法是混淆矩阵\n",
    "* A类别实力被分为B类别次数\n",
    "* 想知道分类器将数字3和数字5混淆多少次，通过混淆矩阵的5行3列"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_predict # 得到预测结果\n",
    "\n",
    "y_train_pred = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 与 cross_val_score 相比\n",
    "* 同样执行交叉验证\n",
    "* 返回的不是评估分数，是每个折叠的预测\n",
    "* 每一个实例在模型预测时使用的数据，在训练期间从未见过"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54016,   563],\n",
       "       [ 1934,  3487]], dtype=int64)"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import confusion_matrix\n",
    "\n",
    "confusion_matrix(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 行表示实际类别，列表示预测类别\n",
    "* 第一行 第一列 53272 被正确的分为 非5 ，真负类\n",
    "* 第一行 第二列 1307 被错误的分类成 5 ，假正类\n",
    "* 第二行 第一列 1077 张被错误的分为 非5， 假负类\n",
    "* 第二行 第二列 4344 张被正确的分在了5 ，真正类\n",
    "* 这种衡量方式太复杂，我们可以用更简单的指标"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[54579,     0],\n",
       "       [    0,  5421]], dtype=int64)"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_perfect_predictions = y_train_5\n",
    "confusion_matrix(y_train_5, y_train_perfect_predictions) # 实际的和结果是不是一一对相应的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "\n",
    "## 正类预测的准确率 被称为分类器的精度\n",
    "\n",
    "\n",
    "$\n",
    "\\text{精度} = \\cfrac{TP}{TP + FP}\n",
    "$\n",
    "\n",
    "TP是真正类的数量，FP是假正类的数量\n",
    "\n",
    "$\n",
    "\\text{召回率TPR} = \\cfrac{TP}{TP + FN}\n",
    "$\n",
    "* 检测正类实例的比例\n",
    "FN是假负类的数量\n",
    "![jupyter](./zhaohui.jpg)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度和召回率|"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8609876543209877"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import precision_score, recall_score\n",
    "\n",
    "precision_score(y_train_5, y_train_pred) # 4497/4497+1647"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6432392547500461"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred) # 4497/4497+924"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 说明 检测一张图的时候，只有73%的概率是准确的，而且只有82%的数字5 被它检测出来\n",
    "* 精度和召回率合成单一指标，成为 F1 分数，谐波平均值\n",
    "* 平均值平等对待所有的值，谐波平均值会给予较低值更高的权重，只有召回率和精度都很高时，才能获得较高的F1分数\n",
    "\n",
    "#### 谐波平均值公式\n",
    "$\n",
    "F_1 = \\cfrac{2}{\\cfrac{1}{\\text{precision}} + \\cfrac{1}{\\text{recall}}} = 2 \\times \\cfrac{\\text{precision}\\, \\times \\, \\text{recall}}{\\text{precision}\\, + \\, \\text{recall}} = \\cfrac{TP}{TP + \\cfrac{FN + FP}{2}}\n",
    "$"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.7363530778164925"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.metrics import f1_score\n",
    "\n",
    "f1_score(y_train_5, y_train_pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* F1分数对那些具有相近精度和召回率 分类器更有利，这不一定符合你的期望\n",
    "* 有时候你更关心精度，有时你能关心召回率\n",
    "* 训练一个分类器检测儿童可以放心观看的视频，你可能要求拦截了很多好的视频，低召回率，保留下来的都是安全的视频，高精度\n",
    "* 不能同时增加精度并减少召回率，反之亦然"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 精度/召回率权衡\n",
    "\n",
    "![jupyter](./quanheng.jpg)\n",
    "\n",
    "* SGDClassifier对每个实例基于决策函数计算一个分值，大于阀值为正类，否则为负类\n",
    "* 中间阀值右侧找到4个真正类 真5 ， 一个假正类 6， 精度为 4/5 80%\n",
    "* 在所有的6个 真正的5 中，分类器找到了4个，召回率为 4/6 67%\n",
    "* 提高阀值，向右移动，精度提高，召回降低\n",
    "* 反之阀值降低，召回提高，精度降低\n",
    "* SKlearn不可以直接设置阀值，可以访问决策分数，\n",
    "* SGDClassifier 默认阀值为0 "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 如何设置阀值\n",
    "\n",
    "* 用predict_proba得到每个实例属于正类的概率，然后对概率切一下。以LogisticRegression为例\n",
    "* clf = LogisticRegression()\n",
    "* clf.fit(X_train, y_train)\n",
    "* pred_proba = clf.predict_proba(X_test)[:, 1]\n",
    "* threshold = 0.75  # 阀值设置为0.75\n",
    "* pred_label = pred_proba > threshold\n",
    "\n",
    "* pred_proba是每个实例为真的概率\n",
    "* 假设阈值是0.75\n",
    "* pred_label里True就是概率大于0.75的"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([87937.12754392])"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 返回决策值decision_function\n",
    "y_scores = sgd_clf.decision_function([some_digit])\n",
    "y_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ True])"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold = 0\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 提高阈值可以降低召回率，提高阈值到200000，就错了这个图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([False])"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "threshold = 200000\n",
    "y_some_digit_pred = (y_scores > threshold)\n",
    "y_some_digit_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    }
   ],
   "source": [
    "# 如何决定使用什么阈值\n",
    "# 返回决策值，而不是预测结果\n",
    "y_scores = cross_val_predict(sgd_clf, X_train, y_train_5, cv=3, method=\"decision_function\") # 交叉预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(60000,)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 有了Y_scores，可以计算所有可能的阈值的精度和召回率\n",
    "y_scores.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import precision_recall_curve\n",
    "\n",
    "precisions, recalls, thresholds = precision_recall_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib绘制精度和召回相对于阈值的函数图\n",
    "\n",
    "\n",
    "def plot_precision_recall_vs_threshold(precisions, recalls, thresholds):\n",
    "    plt.plot(thresholds, precisions[:-1], \"b--\", label=\"Precision\", linewidth=2)\n",
    "    plt.plot(thresholds, recalls[:-1], \"g-\", label=\"Recall\", linewidth=2)\n",
    "    plt.xlabel(\"Threshold\", fontsize=16)\n",
    "    plt.legend(loc=\"upper left\", fontsize=16)\n",
    "    plt.ylim([0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 4))\n",
    "plot_precision_recall_vs_threshold(precisions, recalls, thresholds)\n",
    "plt.xlim([-700000, 700000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_precision_vs_recall(precisions, recalls):\n",
    "    plt.plot(recalls, precisions, \"b-\", linewidth=2)\n",
    "    plt.xlabel(\"召回\", fontsize=16)\n",
    "    plt.ylabel(\"精度\", fontsize=16)\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_precision_vs_recall(precisions, recalls)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 越贴近右上角越好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 通过选择阀值来实现最佳的精度/召回率权衡"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 目标设定为90%的精度，阀值大概在30000左右 , 设置了阀值为30000\n",
    "y_train_pred_90 = (y_scores > 30000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8874301675977654"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "precision_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.586054233536248"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "recall_score(y_train_5, y_train_pred_90)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 获得了一个90%精度的分类器，但如果召回太低，精度再高，也不怎么有用\n",
    "* 如果工作中，需要99%的精度，你应该回应，召回率是多少？"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## ROC曲线\n",
    "* 本质是 真正类率tpr和假正类率fpr（错误的分为正类的负类实例比例）\n",
    "* 与召回/精度曲线非常相似"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import roc_curve\n",
    "\n",
    "fpr, tpr, thresholds = roc_curve(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.rcParams['font.sans-serif'] = ['SimHei']\n",
    "def plot_roc_curve(fpr, tpr, label=None):\n",
    "    plt.plot(fpr, tpr, linewidth=2, label=label)\n",
    "    plt.plot([0, 1], [0, 1], 'k--')\n",
    "    plt.axis([0, 1, 0, 1])\n",
    "    plt.xlabel('假正类率', fontsize=16)\n",
    "    plt.ylabel('真正类率', fontsize=16)\n",
    "\n",
    "plt.figure(figsize=(8, 6))\n",
    "plot_roc_curve(fpr, tpr)\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9576247267833129"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 计算曲线下面积AUC,虚线是随即分类0.5到1\n",
    "from sklearn.metrics import roc_auc_score\n",
    "\n",
    "roc_auc_score(y_train_5, y_scores)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 召回率TPR越高，分类器的假正类FPR就越多\n",
    "* 虚线表示纯随机分类器的ROC曲线，好的分类器应该远离这条线，向左上角\n",
    "* 是使用精度/召回率 PR曲线，还是使用ROC，关键在于 正类非常少或者更关注假正类而不是假负类，选择PR，反之ROC\n",
    "* 例如：前面例子ROC曲线很不错是因为跟负类 非5 相比， 正类 数据5 数量真的很少"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 训练随机森林分类器，比较SGD分类器的ROC曲线和ROC AUC分数\n",
    "* 获取训练集中每个实例的分数\n",
    "* RandomForestClassifier 没有descision_function(),但是拥有dict_proda()方法，sklearn中分类器都有这两个中的一个\n",
    "* dict_proda返回一个矩阵，每行一个实例，每列代表一个类别的概率，比如这个图片 70%是5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n",
      "  from numpy.core.umath_tests import inner1d\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[1. , 0. ],\n",
       "       [0.3, 0.7],\n",
       "       [1. , 0. ],\n",
       "       ...,\n",
       "       [1. , 0. ],\n",
       "       [0.9, 0.1],\n",
       "       [1. , 0. ]])"
      ]
     },
     "execution_count": 49,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.ensemble import RandomForestClassifier\n",
    "forest_clf = RandomForestClassifier(n_estimators=10, random_state=42)\n",
    "y_probas_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3,\n",
    "                                    method=\"predict_proba\")\n",
    "\n",
    "\n",
    "y_probas_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 绘制ROC曲线，需要决策值不是概率，直接使用正类的概率作为决策值：\n",
    "y_scores_forest = y_probas_forest[:, 1] \n",
    "fpr_forest, tpr_forest, thresholds_forest = roc_curve(y_train_5,y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0. , 0.7, 0. , ..., 0. , 0.1, 0. ])"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_scores_forest"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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++03xo0bx8iRIwkPD/37tUCohH4xO6cfEQFVqsDcufDtt26a3Jo1va5KRETS09Pp1asXPp+PRYsWcdFFF3ldUkAFffe+z1oSU9KJKhXGaeW9ucbN54O334YhQ9z0ueDmxf/qKxf4IiLird27d5ORkUFERAT//e9/WbVqVYkLfAiB0E/L8AGua9+rSyteeQVuv90Fv/9ui3TsqMAXESkOvvjiCy644ALGjh0LQNOmTYmOjva4Km8EfeinZ/pD38Ou/TvucGE/bJguwRMRKS7S09N54IEH6N69O1WqVOH666/3uiTPBX3o+zOfymUD27Xv88Ftt7l711vrbpDzyitQt25AyxARkWPYtGkTF198MU8++SRDhw4lPj6eCy64wOuyPBf0oe+zFoCyEYEdeTl7tptR79xz3Qh9EREpPvbt28emTZt4//33mTRpEmXLFp9Lur0U9KP3/wr9qMCEftZNcq68Etq0gYYN3UNERLyVnJzMrFmz6NevH82aNWPTpk0K+1xCIPRdd0XZyKIP/QcfhF274OmnITraza5XQseCiIgUK6tXr6Z3796sX7+epk2b0rhxYwX+MQR/977P39KPLNrjl3374IknYPJkePFFt0yBLyLiLWstr776Ki1btmT//v188cUXNG7c2Ouyiq0QaOm70C9TxOf0o6MhORnGj4fRo4t0VyIiUkCDBw9m2rRp9OjRgylTplCtWjWvSyrWQiD03dei6t63Fg4dgnLloGxZeOyxItmNiIichG7duhEbG8tdd91FWFjQd14XuaD/CWUP5Cua45cbbnA3yRkzpkg2LyIiJyAzM5OxY8fy+uuvA9CvXz/uueceBX4BBf1PqSgv2UtLg1q1oFo1SE0t9M2LiMgJ+P333+ncuTOjR49m+fLlXpcTlIK/e98/OU9RdO9HRsJTT8Gll0LXroW+eRERKaCPP/6YIUOGkJqaytSpUxk4cKDXJQWlkGnplynk0F+61J3PDw9X4IuIeGndunVcffXV1K1bl5UrVyrwT0HIhH5hXrK3ejW0bg0tWkBmZqFtVkRETkBiYiIA5513Hv/973/57rvvOOecczyuKriFQOi7r4XZvb9/v5tlr25d19IXEZHAsdYyZcoU6taty+LFiwH429/+RlRUlMeVBb/gP6f/V0u/8NK5fXtYsgQOHiy0TYqISAEcOHCA4cOHM3PmTDp2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\n",
      "text/plain": [
       "<Figure size 576x432 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(fpr, tpr, \"b:\", linewidth=2, label=\"SGD\")\n",
    "plot_roc_curve(fpr_forest, tpr_forest, \"Random Forest\")\n",
    "plt.legend(loc=\"lower right\", fontsize=16)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Rand 比SGD 好很多，ROC AUC的分数也高很多"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9906831841859425"
      ]
     },
     "execution_count": 53,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "roc_auc_score(y_train_5, y_scores_forest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.9846390168970814\n",
      "0.8277070651171371\n"
     ]
    }
   ],
   "source": [
    "# 再看精度和召回率\n",
    "y_train_pred_forest = cross_val_predict(forest_clf, X_train, y_train_5, cv=3)\n",
    "print(precision_score(y_train_5, y_train_pred_forest))\n",
    "print(recall_score(y_train_5, y_train_pred_forest))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 总结\n",
    "* 选择合适的指标利用交叉验证来对分类器进行评估\n",
    "* 选择满足需求的精度/召回率权衡\n",
    "* 使用ROC曲线和ROC AUC分数比较多个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多类别分类器\n",
    "* 尝试5 之外的检测\n",
    "* 多类别分类器 区分两个以上的类别\n",
    "* 随机森里和朴素贝叶斯可以直接处理多个类别\n",
    "* 支持向量机svm和线性分类器只可以处理二元分类器"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 解决方案\n",
    "1. 将数字图片分类0到9，训练10个二元分类器，每个数字一个，检测一张图片时，获取每个分类器的决策分数，哪个最高属于哪个，称为一对多OvA\n",
    "2. 为每一对数字训练一个二元分类器，区分0，1 区分0，2 区分1，2 称为一对一OvO策略，存在N个类别，需要N*（N-1）/2个分类器，最后看哪个类别获胜最多\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 优缺点\n",
    "* OvO 只需要用到部分训练集对其必须区分两个类别进行训练\n",
    "* 对于较小训练集合OvO比较有优势， 大训练集合 OvA 速度快，所以OvA更常用，比如svm 在数据规模扩大时表现糟糕\n",
    "* sklearn 检查到使用二元分类算法进行多类别分类任务，会自动运行OvA，SVM分类器除外"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.fit(X_train, y_train)\n",
    "sgd_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 内部实际上训练了10个二元分类器，获得图片的决策分数，然后选择了分数最高的类别\n",
    "* 返回10个分数，每个类别1个"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ -31306.86755751, -376033.48155118, -311418.50283545,\n",
       "        -207643.54001465, -518211.0565588 ,   87937.12754392,\n",
       "        -815129.40493064, -235080.2469465 , -399106.65562754,\n",
       "        -669815.97577929]])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "some_digit_scores = sgd_clf.decision_function([some_digit])\n",
    "some_digit_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "np.argmax(some_digit_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0., 1., 2., 3., 4., 5., 6., 7., 8., 9.])"
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 目标类别列表会存储在classes_这个属性中，按值大小排列，\n",
    "sgd_clf.classes_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "5.0"
      ]
     },
     "execution_count": 59,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "sgd_clf.classes_[np.argmax(some_digit_scores)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用OvO策略，一对一或者一对多\n",
    "from sklearn.multiclass import OneVsOneClassifier # 一对一分类器\n",
    "ovo_clf = OneVsOneClassifier(SGDClassifier(max_iter=5, tol=-np.infty, random_state=42))\n",
    "ovo_clf.fit(X_train, y_train)\n",
    "ovo_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "45"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(ovo_clf.estimators_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 使用随机森林"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.])"
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "forest_clf.fit(X_train, y_train)\n",
    "forest_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.1, 0. , 0. , 0.1, 0. , 0.7, 0.1, 0. , 0. , 0. ]])"
      ]
     },
     "execution_count": 63,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 随机森林直接将实例分为多个类别，调用predict_proba()可以获得分类器将每个实例分类为每个类别的概率列表\n",
    "forest_clf.predict_proba([some_digit])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 评估分类器"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 64,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.87762448, 0.87669383, 0.87538131])"
      ]
     },
     "execution_count": 64,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 使用交叉验证评估SGD的准确率\n",
    "cross_val_score(sgd_clf, X_train, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([0.91086783, 0.91174559, 0.90833625])"
      ]
     },
     "execution_count": 65,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 将输入进行简单缩放 ，可以得到准确率 90 %以上\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "X_train_scaled = scaler.fit_transform(X_train.astype(np.float64))\n",
    "cross_val_score(sgd_clf, X_train_scaled, y_train, cv=3, scoring=\"accuracy\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 错误分析\n",
    "\n",
    "### 项目流程\n",
    "\n",
    "1. 探索数据准备的选项\n",
    "2. 尝试多个模型\n",
    "3. 选择最佳模型并用GridSearchCV对参数进行微调\n",
    "4. 尽可能自动化\n",
    "\n",
    "### 确定了一个相对合适的模型，进一步优化，分析其错误类型\n",
    "\n",
    "* 查看混淆矩阵\n",
    "* 使用cross_val_predict()进行预测\n",
    "* 调用confusion_matrix()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 66,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n",
      "c:\\users\\d\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\stochastic_gradient.py:128: FutureWarning: max_iter and tol parameters have been added in <class 'sklearn.linear_model.stochastic_gradient.SGDClassifier'> in 0.19. If both are left unset, they default to max_iter=5 and tol=None. If tol is not None, max_iter defaults to max_iter=1000. From 0.21, default max_iter will be 1000, and default tol will be 1e-3.\n",
      "  \"and default tol will be 1e-3.\" % type(self), FutureWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "array([[5737,    2,   27,   10,   13,   42,   40,    8,   41,    3],\n",
       "       [   2, 6447,   49,   28,    6,   41,    8,   13,  137,   11],\n",
       "       [  52,   34, 5363,   87,   86,   21,   92,   47,  159,   17],\n",
       "       [  51,   40,  145, 5329,    2,  245,   35,   49,  135,  100],\n",
       "       [  13,   23,   37,    9, 5379,    9,   52,   33,   94,  193],\n",
       "       [  77,   35,   32,  181,   77, 4608,  108,   24,  181,   98],\n",
       "       [  34,   21,   47,    2,   43,   99, 5625,    5,   42,    0],\n",
       "       [  26,   19,   66,   28,   59,   13,    6, 5788,   19,  241],\n",
       "       [  54,  138,   71,  147,   15,  168,   53,   24, 5048,  133],\n",
       "       [  39,   27,   27,   88,  166,   34,    2,  181,   90, 5295]],\n",
       "      dtype=int64)"
      ]
     },
     "execution_count": 66,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train_pred = cross_val_predict(sgd_clf, X_train_scaled, y_train, cv=3) # 返回预测标签\n",
    "conf_mx = confusion_matrix(y_train, y_train_pred) # 混淆矩阵\n",
    "conf_mx"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 理想状况下，对角线最大，其余为零"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 使用matplotlib的matshow 函数来查看混淆矩阵的图像表示\n",
    "plt.matshow(conf_mx, cmap=plt.cm.gray) # gray灰色域\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 看起来不错，大多数图片都在主对角线上，说明它们被正确分类\n",
    "* 数字5 看起来比较暗，说明1. 数字5图片较少  2. 分类器在数字5上执行效果不如其他数字上好\n",
    "* 假设把焦点放在错误上，为取得错误率，而不是错误绝对值，需要将混淆矩阵中每个值除以相应类别中的图片数量"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 68,
   "metadata": {},
   "outputs": [],
   "source": [
    "row_sums = conf_mx.sum(axis=1, keepdims=True)\n",
    "norm_conf_mx = conf_mx / row_sums"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 69,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAPkAAAEACAYAAABxpdD1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAALoklEQVR4nO3df4jf9X3A8ecrlzsTEk1O5gxi/IWisBTbcdiJyzC1q90fpWzLkmGN0G2ESm0Q/7JspayGTYr0n2JCL00m0s7NIhsUMsgYhLVQGRn+QJsOqiSEaqg517pGTcjltT9yQZcmuc8ln/d9cq89H39d7vv1dS9yPvP53vc+3883MhNJdS0aegFJbRm5VJyRS8UZuVSckUvFGblUnJF3EBErIuJfImJPRPxTRIwNvVMXEXF1RLww9B5zERHbIuIzQ+/RRUSMR8TuiNgXEd8aep9zGSTyiNgZET+KiL8a4utfgM8B38jMTwGHgU8PvE9XTwBLh16iq4hYC6zKzO8PvUtHm4DvZuYEcHlETAy90NnMe+QR8UfASGbeCdwUEbfM9w5zlZnbMvNfZ/54FfDzIffpIiI+ARzl1D9Kl7yIGAV2AAci4rND79PRFLAmIlYCq4FDA+9zVkMcye8Gnp35eA/wuwPscEEi4k5gPDOfH3qX85n5ceIrwKND7zIHDwA/Br4O3BERXxp4ny5+CFwPbAH2A28Pu87ZDRH5MuBnMx+/DVw9wA5zFhFXAt8E/mzoXTp4FNiWmb8YepE5+BgwmZmHge8A6wbep4uvAl/IzK8BPwE+P/A+ZzVE5L/ig58Tlw+0w5zMHBm/B3w5Mw8OvU8HnwS+GBF7gY9GxLcH3qeLnwI3zXw8ASyEv+dx4CMRMQJ8HLgkXwgS8/0ClYh4APjNzHwiIv4a+K/M/Pt5XWKOIuJB4G+Al2Y+tT0z/3HAlTqLiL2ZeffQe8wmIi4HdnHqkd0osD4zf3b+/2pYEXEH8Hecesj+I+APM/NXw27164aI/ArgB8C/AX8A/E5m/nJel5D+H5n3yOHU7xeB3wf+feZnMEmNDBK5pPlzyT/pJeniGLlU3GCRR8Tmob72hXLn9hbavnDp7zzkkfyS/os5B3dub6HtC5f4zj5cl4rr9dn1iFhwT9WPjo52vu/JkydZtKjbv4vT09MXulKvMpOI6HTfsbHhX0E7PT3NyMhI5/sfO3asyR6XXXZZ5/vOdef333//QlaaVWae9Ru9uMlX61nXsC7EqlWrmsydmppqMhdg8eI237brrruuydyWv6Z97bXXmsy9+eabm8wF2L9/f+8zz3dQ8eG6VJyRS8UZuVSckUvFGblUnJFLxXWKfAFeXVXSjFkjX4hXV5X0gS5H8rtZoFdXldQt8vNeXTUiNs+8g8S+vpeTdPG6nB953qurZuYkMAkL89x1qbouR/L/5IOH6LcDB5ptI6l3XY7k/wz8ICKuYebqqm1XktSnWY/kmfkOp558ex5Y5+WTpYWl02sWM/O/+eAZdkkLiGe8ScUZuVSckUvFGblUXO8XC+t60cC5OHnyZO8zTxsfH28yt+WFHN96660mc48fP95k7sGD7d6FeC4X4pyLDRs2NJkL8Pjjj/c+83wXh/RILhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnFGLhVn5FJxRi4VZ+RScb1eknnZsmWsWbOmz5EATE1N9T7ztJdffrnJ3E2bNjWZC5DZ5m3g9+zZ02Tufffd12QuwEsvvdRk7m233dZkLsCSJUt6n3ns2LFz3uaRXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXiZj0ZJiJWAP8AjABHgY2Z2eaNrCX1rsuR/HPANzLzU8Bh4NNtV5LUp1mP5Jm57UN/vAr4ebt1JPWt87nrEXEnMJ6Zz5/x+c3AZoCxsbF+t5N00TpFHhFXAt8E/vjM2zJzEpgEWL58eZtXTki6YLP+TB4RY8D3gC9n5sH2K0nqU5cn3v4c+G3gLyNib0RsbLyTpB51eeJtO7B9HnaR1IAnw0jFGblUnJFLxRm5VJyRS8X1erXWzGR6errPkQAsXtzrmv/H9u1tfnHw4IMPNpkLsGhRm3+bW3zvAG655ZYmcwFWrFjRZO6hQ4eazAXYsGFD7zOfe+65c97mkVwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeIis7+3FB8ZGcnly5f3Nu+0ZcuW9T7ztFaX9D14sN27PL/33ntN5i5durTJ3Ntvv73JXIAjR440mXvPPfc0mQvw0EMP9T5z48aNvPrqq3G22zySS8UZuVSckUvFGblUnJFLxRm5VJyRS8V1ijwiro6IF1ovI6l/XY/kTwBtzpSQ1NSskUfEJ4CjwOH260jq23kjj4gx4CvAo/OzjqS+LZ7l9keBbZn5i4iznhZLRGwGNs983O92ki7abA/XPwl8MSL2Ah+NiG+feYfMnMzMicycMHLp0nPeI3lm/t7pjyNib2b+RfuVJPWp8+/JM/PuhntIasSTYaTijFwqzsil4oxcKs7IpeKMXCputjPe5mTlypXce++9fY4E4IUX2r0A7sSJE03m7tu3r8lcgK1btzaZ+8wzzzSZ2+L/idN27tzZZO6WLVuazAXYtWtX7zOnpqbOeZtHcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpuMjM3oYtWbIkV69e3du80955553eZ5527bXXNpn74osvNpkLsGbNmiZz165d22Tuk08+2WQuwOjoaJO5t956a5O5AK+88kqTuZl51vcO90guFWfkUnFGLhVn5FJxRi4VZ+RScUYuFWfkUnGdI4+IbRHxmZbLSOpfp8gjYi2wKjO/33gfST2bNfKIGAV2AAci4rPtV5LUpy5H8geAHwNfB+6IiC99+MaI2BwR+yJi3/T0dIsdJV2ELpF/DJjMzMPAd4B1H74xMyczcyIzJ0ZGRlrsKOkidIn8p8BNMx9PAAfbrSOpb4s73GcnsCsi/hQYBda3XUlSn2aNPDP/B/iTedhFUgOeDCMVZ+RScUYuFWfkUnFGLhVn5FJxXX5P3tnJkyd59913+xwJQMvTZcfHx5vMveaaa5rMBbjiiiuazH366aebzB0bG2syF+D48eNN5r755ptN5gJNGrnrrrvOeZtHcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpOCOXijNyqTgjl4ozcqk4I5eKM3KpuF6v1jo2NsaNN97Y50gA7r///t5nnrZ79+4mc7du3dpkLsDDDz/cZO6zzz7bZO5jjz3WZC7AgQMHmsx94403mswF2LFjR+8zjxw5cs7bPJJLxRm5VJyRS8UZuVSckUvFGblUnJFLxZ038ogYj4jdEbEvIr41X0tJ6s9sR/JNwHczcwK4PCIm5mEnST2aLfIpYE1ErARWA4farySpT7NF/kPgemALsB94u/lGkno1W+RfBb6QmV8DfgJ8/sw7RMTmmZ/Z9504caLFjpIuwmyRjwMfiYgR4ONAnnmHzJzMzInMnFi8uNfXu0jqwWyR/y0wCfwSuBJ4pvlGknp13kNvZv4H8FvztIukBjwZRirOyKXijFwqzsil4oxcKs7IpeKMXCouMn/tJLYLtnTp0rzhhht6m3fa0aNHe5/Z2rp165rNXr9+fZO5jzzySJO5r7/+epO5AHv37m0yd9euXU3mAjz11FNN5mZmnO3zHsml4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeKMXCrOyKXijFwqzsil4oxcKs7IpeJ6vVprRLwFHOx4998AjvT2xeeHO7e30PaFS2Pn6zPzqrPd0GvkcxER+zJzYpAvfoHcub2Fti9c+jv7cF0qzsil4oaMfHLAr32h3Lm9hbYvXOI7D/YzuaT54cN1qTgjl4ozcqk4I5eKM3KpuP8FiQxU6C5KHiMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 288x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# # 用0填充对角线 只保留错误，重新绘制\n",
    "np.fill_diagonal(norm_conf_mx, 0)\n",
    "plt.matshow(norm_conf_mx, cmap=plt.cm.gray)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 每行代表实际类别，每列代表预测类别\n",
    "* 8，9列比较亮，说明许多图片被错误的分类为数字8，9\n",
    "* 类别8，9行也偏亮，说明数字8和9经常会跟其他数字混淆\n",
    "* 有些很暗，比如行1，大多数数字1都被正确的分类，一些和8混淆\n",
    "* 5和3是错误最多的"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 结论\n",
    "* 改进数字8和9的分类\n",
    "* 修正数字3和5的混淆"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 如何优化分类器\n",
    "* 尝试多收集这些数字的训练集\n",
    "* 开发一些新特征来改进分类器\n",
    "* 优化分类器算法\n",
    "* 使用pillow或opencv对图片预处理，让显示模型更突出\n",
    "* 分析单个错误"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 70,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "def plot_digits(instances, images_per_row=10, **options):\n",
    "    size = 28\n",
    "    images_per_row = min(len(instances), images_per_row)\n",
    "    images = [instance.reshape(size,size) for instance in instances]\n",
    "    n_rows = (len(instances) - 1) // images_per_row + 1\n",
    "    row_images = []\n",
    "    n_empty = n_rows * images_per_row - len(instances)\n",
    "    images.append(np.zeros((size, size * n_empty)))\n",
    "    for row in range(n_rows):\n",
    "        rimages = images[row * images_per_row : (row + 1) * images_per_row]\n",
    "        row_images.append(np.concatenate(rimages, axis=1))\n",
    "    image = np.concatenate(row_images, axis=0)\n",
    "    plt.imshow(image, cmap = matplotlib.cm.binary, **options)\n",
    "    plt.axis(\"off\")\n",
    "\n",
    "\n",
    "# 查看数字3和数字5的例子\n",
    "cl_a, cl_b = 3, 5\n",
    "X_aa = X_train[(y_train == cl_a) & (y_train_pred == cl_a)]\n",
    "X_ab = X_train[(y_train == cl_a) & (y_train_pred == cl_b)]\n",
    "X_ba = X_train[(y_train == cl_b) & (y_train_pred == cl_a)]\n",
    "X_bb = X_train[(y_train == cl_b) & (y_train_pred == cl_b)]\n",
    "\n",
    "plt.figure(figsize=(8,8))\n",
    "plt.subplot(221); \n",
    "plot_digits(X_aa[:25], images_per_row=5)\n",
    "plt.subplot(222); \n",
    "plot_digits(X_ab[:25], images_per_row=5)\n",
    "plt.subplot(223);\n",
    "plot_digits(X_ba[:25], images_per_row=5)\n",
    "plt.subplot(224); \n",
    "plot_digits(X_bb[:25], images_per_row=5)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 左侧两个是被分类为3的图片\n",
    "* 右侧两个是被分类为5的图片\n",
    "* 大多数错误分类的图片看起来还是非常明显的错误\n",
    "* 原因：SGD是一个线性模型，它所做就是为每个像素分配一个各个类别的权重，当它看到新的图像，将加权后的像素强度汇总，从而得到一个分数进行分类\n",
    "* 数字3和5在一部分像素位上有区别，所以分类器很容易将其弄混\n",
    "* 通过上面图像，如果书写3 的连接点左移，分类器可能将其分类为数字5，这个分类器对图像位移和旋转敏感\n",
    "* 减少混淆的方法之一，就是对图像进行预处理，确保位于中心位置并且没有旋转"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多标签分类\n",
    "\n",
    "* 为每个实例产生多个类别 ，例如 照片识别多个人脸\n",
    "* 分类器经过训练可以识别小红，小白，小军，一张照片 里有 小红，小白\n",
    "* 经过分类器，应该输出[1,1,0]， 是小红，是小白，不是小军\n",
    "* 输出多个二元标签的分类系统称为多标签分类系统"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 71,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
       "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
       "           weights='uniform')"
      ]
     },
     "execution_count": 71,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "\n",
    "y_train_large = (y_train >= 7)\n",
    "y_train_odd = (y_train % 2 == 1)\n",
    "y_multilabel = np.c_[y_train_large, y_train_odd]\n",
    "\n",
    "knn_clf = KNeighborsClassifier()\n",
    "knn_clf.fit(X_train, y_multilabel)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False,  True]])"
      ]
     },
     "execution_count": 72,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# knn支持多标签分类，不是所有的分类器都支持\n",
    "knn_clf.predict([some_digit])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9768423856197171"
      ]
     },
     "execution_count": 73,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 评估多标签分类器方法很多，方法之一就是测量每个标签的F1分数，或者其他二元分类器指标，然后简单平均\n",
    "y_train_knn_pred = cross_val_predict(knn_clf, X_train, y_multilabel, cv=3)\n",
    "f1_score(y_multilabel, y_train_knn_pred, average=\"macro\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* 上面假设了所有标签都同等重要，也可以给每个标签设置一个权重（该目标标签实例的数量），设置average='weighted'"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 多输出分类\n",
    "* 例子：构建一个系统去除图片中的噪声，输入一张有噪声的图片，它将输入一张干净的数字图片，分类器输出是多个标签，一个像素一个标签，每个标签多个值0到255"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 增加噪声，目标将图片还原为原始图片 创建训练集和测试集\n",
    "noise = np.random.randint(0, 100, (len(X_train), 784))\n",
    "X_train_mod = X_train + noise\n",
    "noise = np.random.randint(0, 100, (len(X_test), 784))\n",
    "X_test_mod = X_test + noise\n",
    "y_train_mod = X_train\n",
    "y_test_mod = X_test"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAC2CAYAAAD5uGd5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAZ10lEQVR4nO3de4yV1bkG8OdlLoDDRRC5DFRxgIKXch0sKFQ01Ua0TYtJNbVNG5vSP1qTJk3TYzGmh3pMc5Lak9qUSuIxBqutbdTYGFtse0REEEZBoNwdZ7gJcpPh1uHS9/zBHmX2ehbsvWf2nlmb55cQZr+8e+/v27NY88231ruWuTtERCQdPbr6AEREJD/quEVEEqOOW0QkMeq4RUQSo45bRCQx6rhFRBKjjltEJDGVhT7RzJ4AcA2Al9394VjeoEGDfOTIke1ira2tNPfkyZNBrKKiguZWVoaHzp4PAP/+97+DWN++fWnumTNngliPHvznWz65sfPI5TUB4PTp00GMnVfsGGKfOTuunj170lz2fuz7EBOrGTh+/HgQy/Uz37t3Lw4fPmw5H8QF5NquAd62RTpLU1MT9u/fT9t2QR23mc0BUOHu083sf81sjLtvZbkjR47EypUr28UaGxvp6+7YsSOI9e/fn+YOGjQoiG3fvp3mHj16NIjdcsstNPfIkSNBrLq6mua2tLQEsZqaGprbr18/Gs/GjhUADhw4EMSOHTtGc9kxbNmyJefjGjt2bM7HNnDgQJrLOunYD6XVq1cHsUsuuYTmHj58uN3j73//+zSvEPm0a+Bs225oaOi09xc5V319ffTfCr1VMgvAc5mvFwOYce4/mtlcM2sws4Z9+/YV+BYiJTcL52nXgNq2dA+Fdtw1AHZlvj4IYMi5/+juC9293t3rL7/88o4cn0gpnbddA2rb0j0Ueo/7KIDema/74Dw/AE6ePIndu3e3i/Xu3ZvmDhkS/D/BRx99RHPZ7Yvhw4fTXHZL4Y033qC57BZK7N4su6fe3NxMc9k9W3Zvl91+iYl1HLW1tUGM3VqKHdemTZtoLrtttXPnTpo7ePDgILZq1Sqay44tdhtozJgx7R7H7scXKOd2LdKVCm2Yb+OTXyMnAGjqlKMR6Vpq15KEQq+4XwSw1MxqAdwOYFrnHZJIl1G7liQUdMXt7i04O5CzAsDN7n74/M8Q6f7UriUVBc/jdvdD+GQEXqQsqF1LCjT4IiKSmIKvuHPV2tqKbdu2tYv16tWL5o4bNy6I9enTh+ayGRVLliyhuVdccUUQu/HGG2nuqVOngtjWrbwGg1USshkdAGAWFkCx94pVWLLZNbEZKCdOnAhiGzdupLlXXXVVEIvNomEzPWJFNWvWrAlisaKnqqqqIBabgfL++++3exyrlhUpZ7riFhFJjDpuEZHEqOMWEUmMOm4RkcQUfXCyoqIiGGCsq6vL+fmxgUE2UBZbSZCVZY8aNYrm/vWvfw1isVW6skv5gfhg6sGDB4MYG1xkg4UAXy0vtpIgW23v0ksvpblsudcpU6bQ3GXLlgWx2NKybEmCtWvX0lw2wBgbdLzuuuvaPY4tnyBSznTFLSKSGHXcIiKJUcctIpIYddwiIolRxy0ikpiizyqpqqrCsGHD2sX27t1Lc9l+jxMnTqS5bEZFrFSblbwvXryY5s6aNSuILV++nOZedtllQYzN6IgdAyvbjy0HwPaMZCXzAJ+BwsrKgbCEHOCzZQBeSh8reWebI7ANj4FwH0kA+OxnP0tzP/zww5xeU6Sc6YpbRCQx6rhFRBKjjltEJDHquEVEEpP34KSZVQJozPwBgPvdfV0sv7W1NRgAyx6sbDNhwoQg9vrrr9NcVhq+a9cumrtjx44gNmDAAJr7zjvvBLGBAwfSXDZYFzu37du3BzE2gBcr2//Xv/4VxIYMGUJz8xnIZKXprAwe4AO3sV3eP/jggyA2efJkmps94AjE1xrPft3YeRUi37Yt0lUKmVUyHsCz7v7jzj4YkS6mti1JKORWyTQAd5rZSjN7InOVIlIO1LYlCYV03KsAfN7drwdQBWB25x6SSJdR25YkFHJFsdbd226CNgAYk51gZnMBzAXi92FFuqG82jYrqhIphUKuuBeZ2QQzqwDwZQDvZie4+0J3r3f3+tg60CLdUF5tm1W+ipRCIVfc8wE8A8AAvOTufztfcs+ePTF69Oh2sVj59YYNG4JY9nPbbN68OYiNGDGC5rJZC0OHDqW5TU1NQSy2qD8ru580aRLNZRsssJ3bYzNj2PNHjhxJc4cPHx7E1q3jkyPYjJnYzJZ33w36sSi2wULsc2xubs75dcePH9/ucSdvpJBX2xbpKnl33O6+HmdH30XKitq2pEIFOCIiiVHHLSKSGHXcIiKJKXqBQWtrKxobG9vFBg8eTHN79Ah/jsTWp66pqQlisddlZd1mRnNZPFbyzmYVxAYX2a70TOy9WCn+tm3baC4byMzeHb1Nv379glhsvfTa2togtmrVKprbs2fPnHM/85nPBDF2DkD4ObClAEQ6w/PPP0/jc+bMCWIbN26kuVdffXWnHlMbXXGLiCRGHbeISGLUcYuIJEYdt4hIYtRxi4gkpiS7vGfPvoiVse/ZsyeIbd26leaymQisBB3gs01i5duf+9znghjbCR3giwz99re/pblsY4H169fnlAfwxbquvfZamvuXv/wliMWWGVi5cmUQi5W8V1RUBLG6ujqay5YkYDNNAODOO+8MYqtXr6a5y5Yta/eY7WgvxfHLX/6Sxtn3mnnhhRdofNy4cUEsNhtjyZIlOb+/uwex2GyyjubGZrSxWWKxXHZuMbriFhFJjDpuEZHEqOMWEUmMOm4RkcSUZHAyu1SaDZ4BfIf0qVOn0tw1a9YEsdhNfza4eOONN9Lcffv2BTG2bjYAPP3000Hspz/9Kc1lr8EGF2ODiAcOHAhiixYtorls/fHrr7+e5t58881BLDZIwgZjY58NG4CeP38+zWWbbcReN7vEna37LR3Hyr1/+MMf0lw2iJfPYN/SpUuD2BtvvEFz83ldpjNy2QSGRx99lOYOGjQop1i+dMUtIpIYddwiIolRxy0ikhh13CIiiVHHLSKSmJxmlZjZEAB/cveZmcdPALgGwMvu/vD5ntva2hrM6pg+fTrNZeXtsZ3B2e7eR44cobmVleFpxkatr7nmmiDGZj0AwFNPPRXERo0aRXMPHjwYxNg5sGONHRcb3Qb4JgR9+/aluazE/p577qG5LB77zNn3bcSIETSXLT9w66230tzYsgaF6kjbLmesPJ3N6IiZMmVKh94/VvLOZmSwkvl8X3fmzJk5v0Z3cMErbjMbAOApADWZx3MAVLj7dAB1ZjamuIcoUhxq25KqXG6VnAFwN4CWzONZAJ7LfL0YwIzOPyyRklDbliRdsON29xZ3P3xOqAZA28aKBwEEy9aZ2VwzazCzhkOHDnXOkYp0so62bVasJVIKhQxOHgXQdnO2D3sNd1/o7vXuXj9gwICOHJ9IKeXVttlm0SKlUEjJ+9s4+yvkCgATAJx3Md6qqqqglD22hjIbgGtoaMg5d926dTSXDYbGSqrZQBkrxQeA3bt3B7HW1laa+7WvfS2I3X///UGsubmZPp+97qlTp2guW097/PjxNLelpSWIxT5ztoN9bNCTLTMQ+yF+4sSJIPbmm2/S3OwyZPbcDsirbZeD2G8NbPA+VgL+4IMPBrHY8gbSOQrpuF8EsNTMagHcDmBa5x6SSJdR25Yk5HyrxN1nZf5uwdlBnBUAbs66RyiSHLVtSU1BqwO6+yF8MvouUjbUtiUFqpwUEUmMOm4RkcQUfSMFIFzsnu3mDgDvvfdeEIuVSW/atCmIsRJyAHjrrbeCWGzThb179waxhx56iOay84jNspg0aVIQe/XVV4PYV7/6Vfp8tnHEmTNnaC7bWfrYsWM0l82zj21ewTZ5YN8zgJc8x5YvYBtK7Nixg+bW1NS0e1xdXU3zJLRx48YgNmfOHJrLZjfFNgBgm5Kw94qVm0v+dMUtIpIYddwiIolRxy0ikhh13CIiiSn64KS7B6XZrFQc4CXc2TvEt2EDJVu2bKG5N9xwQxB75ZVXaO6vf/3rILZ8+XKay9YnZmthA8AvfvGLIMbWwp44cSJ9Ptul/R//+AfNZWXs2bujt+nRI/zZffr0aZq7du3aIBYbcGQDpOy4AD6gG1s6oFevXu0e57NG9MUiVsY+e/bsIBZbYoGVt+/fvz/n173iiiuC2KpVq+jzO2PX84uNrrhFRBKjjltEJDHquEVEEqOOW0QkMUUfnDSzYECJVeABvGKPDYgBfECDDeABfIPZ2KAnqwSMVRIuW7aMxpmKioogll1RCsQ3AP7d734XxGIL+bMBu9gAEBsQjg1OsjXQN2zYQHPZAFlsI2W2QXK/fv1obnYVbGxw9GK2fft2GmcDkfkM7uaT29TUFMRi1cqvvfZaEIv9P5CzdMUtIpIYddwiIolRxy0ikhh13CIiiVHHLSKSmJxmlZjZEAB/cveZZlYJoDHzBwDud3e+vTrOzpzIntUR2+2bzRBgazUDfH3p2BrObJZE9rrObdjMh7fffpvmfu973wtisTWH2euyGSyPPPIIff6vfvWrIPb444/TXPbZxGaKHDlyJIgdOHCA5mbPDgLisz8+/PDDIMZm0QC8HJ+VTAO8RL8jOtK2UxPbpZ256667gtgDDzyQ8/Nff/31IPbzn/+c5n7zm98MYrElKcaNG5fzMZSzC3bcZjYAwFMA2nq68QCedfcfF/PARIpNbVtSlcvlyxkAdwNoWyFoGoA7zWylmT2RuUoRSZHatiTpgh23u7e4++FzQqsAfN7drwdQBSBYGszM5ppZg5k1HDx4sPOOVqQTdbRtx1bhEym2Qm4YrnX3tvVIGwCMyU5w94XuXu/u9Wx5T5FuKq+2HatcFSm2Qn4VXGRm/wVgPYAvA+CjaRmnTp3Crl272sViJe9scHH06NE09/Dhw0Es9kOisbExiMXK419++eUgxkpyY6/ByusBXu7LBouef/55+vxvfetbQWzChAk095lnnglisXLzsWPHBjG2YTLA11GPHcOKFSuC2JgxQT8IgA9wxo7hlltuafc4tjlzgfJq290V26gZiG8uXQyTJ08OYj/4wQ9oLvu/wZZXAHi7uBh/gBbScc8H8AwAA/CSu/+tcw9JpMuobUsScu643X1W5u/1ODv6LlIW1LYlNSrAERFJjDpuEZHEqOMWEUlMl+zyXldXR3PZpgmxUu0RI0YEsXXreHUy2zF8yZIlNJeNZk+bNo3mshLwlStX0lyGzUrZvHkzzWXl9X/4wx9oLtt04aGHHqK5bKZB//79aS77Xqxfv57mXnXVVUGMbSYB8BJ79tkCwPLly9s9ZuX9khZW3n7HHXfQXLajfKw8vpx3j9cVt4hIYtRxi4gkRh23iEhi1HGLiCSmJIOT2btD//Of/6S5n/70p4NYrJyVlbzHBiNYWffq1atpLtsJm8UAXtbLYgAvx2fl8dXV1fT5X/ziF4NYS0sLyQQee+yxIPbnP/8559eNlUazNbZjywyw12Bl8ABfn33o0KE09/jx4+0ex9b4lnSwEv358+fT3O9+97tB7Omnn6a5sRL7cqArbhGRxKjjFhFJjDpuEZHEqOMWEUmMOm4RkcQUfVZJr169glkda9asobkbN24MYrFZFmxn8GHDhkWPIVtsF3E2wyG2OcKWLVuCWGyzgKVLlwax2tranGIA32k+NqOC7YTONqmIvUZsVgkrWWezewCgsjJsWmyZAgD44IMPghibCQQAkyZNavf4kksuoXmStk2bNtE423wktkxEOdMVt4hIYtRxi4gkRh23iEhi1HGLiCTmgoOTZtYfwO8BVAA4BuBuAAsAXAPgZXd/+HzPr6ioQE1NTbtYbJd3NvDABrkAPoAWG9BgO5HHyuPZMcTWp2Yl4Nnl/W2uvvrqIHbo0KEgtm/fPvr8RYsWBbFYKT4rhb/ppptoLhsYHD16NM09cuRIEIvtss4GdGMDr2y99J07d9Lc7IHmQncu72i7lvyxyQcAMG/evCD24osv0lw2GH3bbbd17MASlMsV970AHnX32wDsAXAPgAp3nw6gzsz4NAqR7k3tWpJ1wStud//NOQ8vB/B1AP+TebwYwAwAWzv/0ESKR+1aUpbzPW4zmw5gAIAdAHZlwgcBDCG5c82swcwa9u/f3ykHKlIM+bTrTP7HbTt2W0uk2HLquM1sIIDHANwH4CiA3pl/6sNew90Xunu9u9eX875vkrZ82zXQvm3HlhwWKbYLdtxmVg3gjwAecPdmAG/j7K+RADABQFPRjk6kSNSuJWW5lLx/G8BkAPPMbB6AJwF8w8xqAdwOgG+BnnH8+PFg9/XYTITscmYA2LZtG8391Kc+FcTYzuIA8NZbbwWxxx9/nOYuWLAgiG3dym91srJ7NtME4Lu/Z+9YDgDPPvssff6oUaOC2Pvvv09zf/SjHwWx4cOH09x8StPZ+w0ePJjmsmUG3nzzTZqbPesI4J8tEG6sEds5Pgcdatfd2cMP8wkxDz74YFHej80WeeSRR4JYbKbIsWPHghib3QUAP/nJT4LYV77ylQsdYtnJZXByAc5Ok/qYmb0E4FYA/+3ufLEKkW5M7VpSVtAiU+5+CMBznXwsIl1K7VpSocpJEZHEqOMWEUlM0dfj7t27d1DuferUKZqbPYgJxNfjZmt6T506leaePHkyiMXWe7733ntzzmVl2bFS7XfeeSeIsQHDWAk3m3p233330dw77rgjiK1fv57mfuELXwhisUFPNmAUK2M+ceJEEIuV0rPvT2yQd+3atRd8n4tdrA3eddddQSyfpR9iA/osly39EBtwZGXsbIkH4OIciGR0xS0ikhh13CIiiVHHLSKSGHXcIiKJUcctIpKYos8qqaioCHZOf+2112jupZdeGsTYpgAAMGPGjCD20Ucf0Vw2av2lL32J5rKRc7bZAMB3OGc7vwN8V3m283p9fT19PpvtMnHiRJq7e/fuIHbttdfS3HfffTeIxcrI2Wyg2AyhWbNmBbHYbJUhQ8KF+GKzSrLbSAdK3svWd77zHRpns41inzObARKbFRKLZ2OzWgDgZz/7WRAbN25cTq95sdIVt4hIYtRxi4gkRh23iEhi1HGLiCSm6IOTra2twZraffr0oblskOOGG26guWwAjg1CAsDkyZODWGy95yeffDKINTQ00Fy2bnVsgJQNOg4cODCIsXWsAb7DOlujGwA2bNgQxNgAIAAcOHAgiO3atYtkAlVVVUGMDUICZ9dhzxYbxGKDlrHPIdeBsIvZlClTaHzPnj1BbOHChR1+v+wlLQBg5syZHX5didMVt4hIYtRxi4gkRh23iEhi1HGLiCTmgoOTZtYfwO8BVAA4BuBuANsANGZS7nf3cCFtkW5M7VpSlsusknsBPOrur5rZAgD/AeBZd/9xLm/Q2tqK9957r12MzfIA+IyBxsZGksk3Fjh06FAuhwSAl5sDfDbD7Nmzae7IkSODGJv9ASAo+wf4bBV2XgBw5ZVXBrFNmzbR3N69e+f0XgAwffr0IHbZZZfR3O3btwexpqYmmltXVxfEmpubaS77HGOl2NmzY2IbbeSgQ+26XMydO7erD0EKcMFbJe7+G3d/NfPwcgCnAdxpZivN7AkzK/qUQpHOpnYtKcv5HreZTQcwAMCrAD7v7tcDqAIQXI6a2VwzazCzBrYQk0h3kU+7zuR/3Lb37dtXwiMV+UROHbeZDQTwGID7AKx197bl8hoAjMnOd/eF7l7v7vX9+/fvtIMV6Uz5tmugfduO3dYSKbYLdtxmVg3gjwAecPdmAIvMbIKZVQD4MoBwXVCRbk7tWlKWy328bwOYDGCemc0D8H8AFgEwAC+5+9/O9+Tq6upgLerYwCArkx46dCjNPXr0aBBj63kDvKybDZ4BwN69e4NYZSX/mFg8Vi4+bNiwIMbWko4NbrLzZZ8XwM8ttswAK4+vra2luadPnw5iseNds2ZNEGO72gN8XXM2EAqESxWwHeJz1KF2LdKVLthxu/sCAAuywv9ZnMMRKQ21a0mZCnBERBKjjltEJDHquEVEEqOOW0QkMUWvDqusrAxKqGM7obOZE7GF89nGACtWrKC5U6dODWKx4glWmh6bKdK3b98gNnbsWJr797//PYhNmzYtiMU2eNi8eXNOzwf4zus7d+6kuWy2ydatW2ku26k+VnZ/3XXXBbHY95LNTGGzcABg//797R6fOXOG5omUM11xi4gkRh23iEhi1HGLiCRGHbeISGLM3Yv7Bmb7ALQtxDwIwP7zpKeqXM8L6P7ndqW7d8lqT2rbSUvhvKJtu+gdd7s3M2tw9/qSvWGJlOt5AeV9bp2pXD8nnVf3pFslIiKJUcctIpKYUnfcC0v8fqVSrucFlPe5daZy/Zx0Xt1QSe9xi4hIx+lWiYhIYtRxi4gkpmQdt5k9YWbLzezBUr1nMZnZEDNbes7j5M/PzPqb2StmttjMXjCz6nI4r2Iqx89Hbbv7K0nHbWZzAFS4+3QAdWZGd9BOhZkNAPAUgJrM43I5v3sBPOrutwHYA+AelMd5FUUZfd8/pradhlJdcc8C8Fzm68UAZpTofYvlDIC7AbRkHs9CGZyfu//G3V/NPLwcwNdRBudVRLNQfp+P2nYCStVx1wBoW9T6IIBwMe2EuHuLu5+7NXlZnZ+ZTQcwAMAOlNF5FUFZfd8Bte1UlKrjPgqgd+brPiV831Ipm/Mzs4EAHgNwH8rovIrkYvh8yuYcy6ltl+pg38Ynv4pMANBUovctlbI4PzOrBvBHAA+4ezPK5LyK6GL4fMriHMutbRd967KMFwEsNbNaALcD4Htupatczu/bACYDmGdm8wA8CeAbZXBexVIu3/fzKZdzLKu2XbLKycxo9a0AXnf3PSV50xIq1/Mr1/PqLBfD51Ou55jyeankXUQkMUndkBcREXXcIiLJUcctIpIYddwiIolRxy0ikpj/B6EdzqHQkuiXAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "some_index = 5500\n",
    "plt.subplot(121);plt.imshow(X_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.subplot(122);plt.imshow(y_test_mod[some_index].reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "metadata": {},
   "outputs": [],
   "source": [
    "knn_clf.fit(X_train_mod, y_train_mod)\n",
    "clean_digit = knn_clf.predict([X_test_mod[some_index]])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.imshow(clean_digit.reshape(28, 28), cmap = matplotlib.cm.binary)\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
